package com.cskaoyan.day5.deque._02_api;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * @author Common-zhou
 * @since 2023-03-03 10:54
 */
public class Demo1 {
    public static void main(String[] args) {
        // ------------- 作为Stack的
        //        E pop()： 从此列表所表示的堆栈处弹出一个元素。
        //        void push(E e): 将元素推入此列表所表示的堆栈。

        //test1();

        test2();
    }

    private static void test2() {
        //        E pop()： 从此列表所表示的堆栈处弹出一个元素。
        //        void push(E e): 将元素推入此列表所表示的堆栈。


        Deque<String> deque = new ArrayDeque<>();
        deque.push("zs");
        deque.push("ls");
        deque.push("wu");

        System.out.println(deque.pop()); // wu
        System.out.println(deque.pop()); //ls
        System.out.println(deque.pop());// zs

        // 栈的特点： 后进先出


    }

    private static void test1() {

        // ------------- 作为Queue的
        //        E peek()： 获取队头元素，但不移除它
        //        E poll()：从队头移除元素
        //        boolean offer(E e)： 添加一个元素到队尾

        Deque<String> deque = new ArrayDeque<>();

        // offer poll peek()
        deque.offer("zs");
        deque.offer("ls");
        deque.offer("wu");

        //   队头            队尾
        //   zs    ls    wu

        System.out.println(deque);

        // 出双端队列  也是从队头出来
        System.out.println(deque.poll());  //zs

        // peek : 从双端队列里获取元素，但是不移除
        System.out.println(deque.peek()); // ls
        // 队列里 有 [ls     wu]
        System.out.println(deque);


    }
}
